frame
佈局方式無法很好地適應不同尺寸的螢幕frame
frame
表示與父視圖之間的絕對距離
這些值的單位是 points (點),而不是 pixels (像素)。
因為 View 在 Retina 和非 Retina 螢幕上的大小無法保持一致。
而 points 會取決於螢幕解析度來決定多少 pixels 顯示一個點。
Auto Layout
中大部分的約束都是描述性
的
一個名叫 Cassowary 的佈局演算法解決了使用者界面的佈局問題,它通過將佈局問題抽象成線性方程式和不等式約束來進行求解。
Greg J. Badros and Alan Borning, “The Cassowary Linear Arithmetic Constraint Solving Algorithm: Interface and Implementation”, Technical Report UW-CSE-98-06-04, June 1998.
Greg J. Badros, Alan Borning, and Peter J. Stuckey, “The Cassowary Linear Arithmetic Constraint Solving Algorithm,” ACM Transactions on Computer Human Interaction , Vol. 8 No. 4, December 2001, pages 267-306.
當方程組的解
方程組的解 | 結果 |
---|---|
無窮多個 | 會得到缺乏約束的有歧義的佈局 |
無解 | 約束有衝突 |
==唯一解== | 才會得到一個穩定的佈局。 |
因為 Auto Layout 佈局系統在最後仍然需要通過 frame 來進行。
不過它相比原有的佈局系統加入了從約束計算 frame 的過程,而在這裡,我們需要了解 Auto Layout 的佈局性能如何。